package com.ipan.kits.timer;


/**
 * 计划任务接口；
 * 
 * @author iPan
 * @version 2013-07-16
 */
public interface Task {
	
	/**
	 * 启动；
	 */
	public void start();
	
	/**
	 * 暂停；
	 */
	public void pause();
	
	/**
	 * 恢复；
	 * 在调用停止前，先调用isRunning检测是否在运行中，有些应用在运行中是不能直接停止的，需要注意！
	 */
	public void recovery();
	
	/**
	 * 停止；
	 * 在调用停止前，先调用isRunning检测是否在运行中，有些应用在运行中是不能直接停止的，需要注意！
	 */
	public void stop();
	
	/**
	 * 获取任务名字；
	 */
	public String getName();
	
	/**
	 * 是否启动；
	 */
	public boolean isStart();
	
	/**
	 * 是否支持循环执行；
	 */
	public boolean isLoop();
	
	/**
	 * 是否中断；
	 */
	public boolean isIntercept();
	
	/**
	 * 验证是否通过；
	 */
	public boolean isValid();
	
	/**
	 * 检查是否中断，若中断就抛出异常；
	 */
	public void checkIntercept() throws TaskInterceptException;
	
	/**
	 * 是否运行中；
	 */
	public boolean isRunning();
	
	/**
	 * 获取校验器；
	 */
	public TaskValidateable getValidater();
	
}
